//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//#include <stdbool.h>
//
//#define HASH_SIZE 100003 
//
//int main() 
//{
//    int T;
//    scanf_s("%d", &T);  
//
//    int* hashTable = (int*)malloc(HASH_SIZE * sizeof(int));
//    bool* used = (bool*)malloc(HASH_SIZE * sizeof(bool));
//
//    while (T--) 
//    {
//        int n;
//        scanf_s("%d", &n); 
//
//        int* a = (int*)malloc(n * sizeof(int));  
//        int* b = (int*)malloc(n * sizeof(int)); 
//        int b_size = 0;  
//
//        memset(used, 0, HASH_SIZE * sizeof(bool));
//
//        for (int i = 0; i < n; i++)
//        {
//            scanf_s("%d", &a[i]);
//        }
//
//        for (int i = 0; i < n; i++)
//        {
//            int x = a[i];
//            int idx = (x % HASH_SIZE + HASH_SIZE) % HASH_SIZE;
//
//            bool found = false;
//            while (used[idx]) 
//            {
//                if (hashTable[idx] == x) {
//                    found = true;
//                    break;
//                }
//                idx = (idx + 1) % HASH_SIZE;
//            }
//
//            if (!found)
//            {
//                used[idx] = true;       
//                hashTable[idx] = x; 
//                b[b_size++] = x; 
//            }
//        }
//
//        for (int i = 0; i < b_size; i++)
//        {
//            if (i > 0) printf(" ");
//            printf("%d", b[i]);
//        }
//        printf("\n");
//
//        free(a);
//        free(b);
//    }
//
//    free(hashTable);
//    free(used);
//
//    return 0;
//}


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

#define MAX_SIZE 110

int main() 
{
    char s[MAX_SIZE];
    fgets(s, MAX_SIZE, stdin); 

    size_t len = strlen(s);
    if (len > 0 && s[len - 1] == '\n')
    {
        s[len - 1] = '\0';
        len--;
    }

    long long stack[MAX_SIZE];
    int top = -1;        

    for (int i = 0; i < len; i++) 
    {
        if (s[i] == ' ') continue;

        if (isdigit(s[i]))
        {
            long long num = 0;
            while (i < len && s[i] != '#') 
            {
                num = num * 10 + (s[i] - '0');
                i++;
            }
            if (i < len && s[i] == '#') i++;
            stack[++top] = num; 
        }
        else
        {
            long long b = stack[top--]; 
            long long a = stack[top--]; 
            long long result;

            switch (s[i])
            {
            case '+': result = a + b; break;
            case '-': result = a - b; break;
            case '*': result = a * b; break;
            }
            stack[++top] = result; 
        }
    }

    printf("%lld\n", stack[top]);

    return 0;
}